//
// Created by Mzoro on 2022/3/30.
//
#include <stdio.h>
#include <ctype.h>

/**
 * 判断 o 是不是一个正号或者负号
 * @param o
 * @return
 */
#define isSign(c) (c == '+' || c == '-')

/**
 * 支持字符串的最大长度
 */
static int MAX_LENGTH = 20;


int getint(int *a) {

    // 充当一个字符串buffer
    static char c;
    // 保存数字字符
    char arr[MAX_LENGTH];
    // arr 的游标
    int i = -1;
    // 正负号 1/ -1
    int sign = 1;
    int result = 0;
    if (c != '\0') {
        if (isdigit(c)) {
            arr[0] = c;
            i++;
        } else {
            if (c == '-') {
                sign = -1;
            }
        }
    }
    c = '\0';
    // 去掉空格
    while (isspace(c = getchar())) {
    }
    if (isSign(c) && c == '-') {
        sign = -1;
    } else if (isdigit(c)) {
        arr[++i] = c;
    }
    while ((c = getchar()) != EOF && c != '\n' && !isSign(c)) {
       if (isdigit(c)) {
            arr[++i] = c;
        } else {
            printf("字符 \"%c\" 即不是数字，也不是正负号, 忽略\n", c);
        }
    }

    if (i >= 0) {
        for (int j = 0; j <= i; ++j) {
            result = result * 10 + (arr[j] - '0');
        }
        *a = result * sign;
        return 1;
    } else {
        return EOF;
    }
}
